Digital video streams are typically encoded using one of many different encoding standards. For example, a digital video stream may be compressed for conversion into a data format that requires fewer bits. This compression can be lossless such that the original video stream can be recreated upon decoding or can be lossy such that an exact replica of the original video stream cannot be recreated, but where the decoding of the compressed data is more efficient.
There are currently a large number of video encoding standards, and new standards are frequently emerging. Examples of current video encoding standards include JPEG (Joint Photographic Experts Group), MPEG (Moving Pictures Experts Group), MPEG-2, MPEG-3, MPEG-4, H.263, H.263+, H.264, and proprietary standards such as Real Video and Windows Media. In order to fully realize the benefits of digital video, a user requires access to decoders that are capable of decoding all common encoding standards.
Many important uses for streaming video are related to real-time communications. For example, video telephony requires video decoding in real-time, such that it can synchronize with a corresponding audio signal. Therefore, it is also desirable to provide users with real-time video decoding to provide applications related to real-time communications. Moreover, situations arise where a user requires the decoding of multiple video streams. For example, a user currently on a video telephone call receives an attachment image from the person to which the user is speaking. In this example, real-time decoding of the video telephony stream must be maintained while the image, which is necessary to the conversation, is decoded.
Currently, video decoding is performed using one of two available methods, single-standard hardware video decoders and software-based programmable cores that can decode a video stream according to one or more video standards. Single-standard hardware video decoders can provide real-time decoding functionality. However, in order to decode a video stream encoded using a particular encoding standard, a user must have a hardware video decoder for that particular standard. Since there are a large number of widely used video encoding standards, a user would require many different single-standard hardware video decoders to access digital video encoded using different video encoding standards, at a significant monetary cost to the user. Moreover, typical computer systems do not have the capability to add a large number of single-standard hardware video decoders, further limiting the number of video streams a user can access.
Current software-based programmable core video decoders are available for providing decoding using one or more video encoding standards. A programmable core video decoder may include hardware acceleration for accelerating the decoding functionality. However, the programmable core performs all decoding. Programmable core video decoders typically have high processing overhead, are less efficient, and consume much more power than a single-standard hardware video decoder. Moreover, programmable core video decoders are not able to consistently provide real-time video decoding, as the decoding is subject to processing requirements of the entire computer system.
Accordingly, currently available digital video decoders are not capable of providing concurrent video decoding for multiple streams encoded using a large number of widely used video encoding standards. Moreover, currently available digital video decoders are not capable of concurrently decoding multiple video streams, wherein at least one video stream requires real-time decoding. Thus, what is needed is a new digital video decoder that overcomes the limitations on the prior art. The new digital video decoder should provide concurrent video decoding functionality for a plurality of video streams encoded using a plurality of different video standards.